1. Field of the Invention
The present invention relates to fibre channel systems, and more particularly, to credit recovery involving virtual lanes.
2. Background of the Invention
Fibre channel is a set of American National Standard Institute (ANSI) standards, which provide a serial transmission protocol for storage and network protocols such as HIPPI, SCSI, IP, ATM and others. Fibre channel provides an input/output interface to meet the requirements of both channel and network users.
Fibre channel supports three different topologies: point-to-point, arbitrated loop and fibre channel fabric. The point-to-point topology attaches two devices directly. The arbitrated loop topology attaches devices in a loop. The fibre channel fabric topology attaches host systems directly to a fabric, which are then connected to multiple devices. The fibre channel fabric topology allows several media types to be interconnected.
Fibre channel is a closed system that relies on multiple ports to exchange information on attributes and characteristics to determine if the ports can operate together. If the ports can work together, they define the criteria under which they communicate.
In fibre channel, a path is established between two nodes where the path's primary task is to transport data from one point to another at high speed with low latency, performing only simple error detection in hardware.
Fibre channel fabric devices include a node port or “N_Port” that manages fabric connections. The N_port establishes a connection to a fabric element (e.g., a switch) having a fabric port or F_port. Fabric elements include the intelligence to handle routing, error detection, recovery, and similar management functions.
A fibre channel switch is a multi-port device where each port manages a simple point-to-point connection between itself and its attached system. Each port can be attached to a server, peripheral, I/O subsystem, bridge, hub, router, or even another switch. A switch receives messages from one port and automatically routes it to another port. Multiple calls or data transfers happen concurrently through the multi-port fibre channel switch.
Fibre channel switches use memory buffers to hold frames received and sent across a network. Associated with these buffers are credits, which are the number of frames that a buffer can hold per fabric port.
Fibre channel switches use “virtual lanes” (or virtual channels) to allocate receive credits at an E_port. Virtual lanes are a portion of the data path between a source and destination port.
In Fibre Channel, buffer-to-buffer credit mechanism is used to control frame flow on a Fibre Channel link to prevent the inability to deliver any frames because of lost R_RDYs or lost frames. Fibre Channel point-to-point links lose credit when an R_RDY or a SOFx is corrupted in transit. As credit is lost, performance degrades until frame timeouts occur. Then the only recourse is to reset the link.
The Fibre Channel standard has a credit recovery mechanism for lost R_RDYs or lost frames. Both ports on the link must support Fibre Channel credit recovery before it can be enabled.
Fibre Channel credit recovery defines BB_SC_N, a number from 0 to 15 and two primitive signals, BB_SCr and BB_SCs for credit recovery. When BB_SC_N is net zero, credit recovery is enabled. Two credit recovery operations are used, one for lost frame(s) and another for lost R_RDY(s).
For lost frame(s) credit recovery, BB_SCs are transmitted whenever 2**BB_SC_N frames have been transmitted since the last BB_SC was transmitted. The receiving port counts the number of frames received between received BB_SCs primitive signals and if the number is less than 2*BB_SC_N, it transmits as many R_RDYs as frames were lost back to the originator of the frames. Thus the originator does not lose credit for transmitting more frames.
For lost R_RDY(s) credit recovery, BB_SCr is transmitted whenever 2**BB_SC_N R_RDYs have been transmitted since the last. BB_SCr was transmitted. The receiving port counts the number of R_RDYs received between received BB_SCr primitive signals and if the number is less than 2*BB_SC_N, it adds the lost number of credits to its credit counter. Thus a receiver does not lose credit for transmitting more frames.
The present fibre channel standard does not provide any guidance regarding the foregoing credit recovery methodology if virtual or pseudo virtual lanes are used. The current fibre channel standards as well as conventional fibre channel switches do not have a system or methodology for detecting loss of credit and then allocating the credit to the proper virtual/pseudo virtual lane.
As fibre channel systems become more complex and operate in higher bandwidth environments, credit recovery and proper credit allocation become essential for overall system performance. Therefore, what is required is a process and system that efficiently detects credit loss and allocates credit to the proper virtual/pseudo lanes.